package cn.demoncat.util.pay.yeepay.constant;

/**
 * 接口
 *
 * @author 延晓磊
 * @since 2020年10月15日
 */
public enum  YeepayApi {
    /**
     * 普通商户入网申请：帮助商户（个体工商户、企业、单位）与易宝支付签约
     */
    MERCHANT_REGISTER("/rest/v2.0/mer/register/contribute/merchant", "普通商户入网申请"),
    /**
     * 小微商户入网申请：帮助商户（个人，无营业执照）与易宝支付签约
     */
    MICRO_MERCHANT_REGISTER("/rest/v2.0/mer/register/contribute/micro", "小微商户入网申请"),
    MERCHANT_REGISTER_QUERY("/rest/v2.0/mer/register/query", "商户入网进度查询"),
    MERCHANT_UPLOAD("/yos/v1.0/sys/merchant/qual/upload", "商户资质文件上传"),
    /**
     * 交易下单：先调用本接口生成预支付订单，易宝返回支付授权 token 后，再使用 token 调起相应支付；支持单笔和合单
     */
    TRADE_ORDER("/rest/v1.0/trade/order", "交易订单"),
    /**
     * 主动查询订单状态
     */
    TRADE_ORDER_QUERY("/rest/v1.0/trade/order/query", "交易订单查询"),
    /**
     * 主动查询合并订单状态
     */
    TRADE_ORDER_COMBINE_QUERY("/rest/v1.0/trade/order/combine-query", "合并交易订单查询"),
    /**
     * 关闭交易订单
     *
     * 1、关闭未支付的订单
     */
    TRADE_ORDER_CLOSE("/rest/v1.0/trade/order/close", "关闭交易订单"),
    /**
     * 申请退款
     *
     * 1、将支付款退还给付款方
     * 2、支持多次退款，需要提交原支付订单的商户订单号和不同的退款单号，总退款金额不能超过用户实际支付金额
     * 3、退款请求成功之后，按退款规则将退款金额原路退回
     * 4、交易订单状态为“SUCCESS”时才能发起退款
     */
    TRADE_REFUND("/rest/v1.0/trade/refund", "申请退款"),
    /**
     * 主动查询退款状态
     */
    TRADE_REFUND_QUERY("/rest/v1.0/trade/refund/query", "退款订单查询"),
    /**
     * 申请分账
     *
     * 1、订单支付成功后，发起分账请求，将收款资金分给分账接收方。
     * 2、可应用于交易抽成、上下游供应商结算等场景。
     * 3、一次分账请求中，有任意一个分账接收方分账失败，则这次分账请求的全部分账明细处理均会失败。
     */
    DIVIDE_APPLY("/rest/v1.0/divide/apply", "申请分账"),
    /**
     * 查询分账结果
     */
    DIVIDE_QUERY("/rest/v1.0/divide/query", "查询分账"),
    /**
     * 完结分账
     *
     * 1、如订单后续不需要再进行分账，可直接调用此接口将订单剩余可分账金额全部给收款商户。
     */
    DIVIDE_COMPLETE("/rest/v1.0/divide/complete", "完结分账"),

    /**
     * 交易日对账下载：每天上午10点生成昨天的对账文件，昨天无交易则不生成对账文件
     */
    TRADE_BILL_DOWNLOAD("/yos/v1.0/std/bill/tradedaydownload", "交易对账单下载"),

    /**
     * 聚合支付统一下单
     *
     * 场景：APP、公众号、小程序，自己调用第三方原生支付，不能合单
     * 实现：聚合支付统一下单 + 第三方原生支付
     *
     * 1、请求聚合支付接口，获取预支付订单（用于调起第三方原生支付）
     * 2、调起第三方支付的SDK，如扫码支付、JSAPI、APP支付
     * 3、支付完成后，通知商户支付结果
     * 4、前端间隔查询订单状态，发现变更时跳转页面
     */
    AGG_PAY("/rest/v1.0/aggpay/pre-pay", "聚合支付"),

    /**
     * 页面-标准收银台
     *
     * 场景：H5网站，调用易宝提供的收银台页面，支持合单
     * 实现：交易下单 + 标准收银台
     *
     * 1、请求交易订单，获取支付token（用于调起标准收银台）
     * 2、请求标准收银台接口，跳转到易宝收银台页面
     * 3、支付成功，通知商户支付结果，同时跳转回平台重定向接口
     * 4、平台处理返回数据，跳转到支付成功页面
     */
    PAGE_CASHIER("https://cash.yeepay.com/cashier/std", "页面-标准收银台"),

    /**
     * 通知-商户入网
     */
    NOTIFY_MERCHANT_REGISTER("notify-merchant-register", "通知-商户入网"),
    /**
     * 通知-支付成功
     */
    NOTIFY_TRADE_ORDER("notify-pay", "通知-支付成功"),
    /**
     * 通知-退款
     */
    NOTIFY_TRADE_REFUND("notify-refund", "通知-退款"),

    /**
     * 页面-普通商户签约地址
     *
     * 1、普通商户入网申请通过后，到“协议待签署”步骤时，平台通知商户访问本页面，完成电子签约（小微商户不需要签约）
     */
    PAGE_MERCHANT_SIGN("https://mp.yeepay.com/merchant-manage/index.html", "页面-普通商户签约"),
    /**
     * 页面-商户管理后台登录地址
     *
     * 1、商户入网开通后，会发送账户短信，可以登录商户管理后台查看账户信息（日常功能，与入网申请无法）
     */
    PAGE_MERCHANT_LOGIN("https://mp.yeepay.com/auth/signin", "页面-商户管理后台")

    ;

    private final String url;
    private final String name;

    YeepayApi(String url, String name) {
        this.url = url;
        this.name = name;
    }

    public java.lang.String getUrl() {
        return url;
    }

    public java.lang.String getName() {
        return name;
    }
}
